package com.cloudfun.campusshare.common.model.dto.kjt;

import com.cloudfun.campusshare.common.constant.KjtTradeState;
import com.cloudfun.campusshare.util.DateUtil;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.time.format.DateTimeFormatter;

/**
 * Created by Huqin on 2020/8/11
 */
@Data
@ApiModel("快捷通支付通知DTO")
@JsonPropertyOrder(value = {"notifyTime", "signType", "notifyType", "gmtClose", "gmtPayment", "tradeStatus", "version", "sign",
        "gmtCreate", "inputCharset", "outerTradeNo", "tradeAmount", "innerTradeNo", "failReason", "failCode", "notifyId"})
public class KjtPaymentNotifyDTO extends KjtNotifyBaseDTO {

    /**
     * [32]
     * 商户网站唯一订单号
     */
    @JsonProperty("outer_trade_no")
    private String outerTradeNo;

    /**
     * [32]
     * 快捷通交易订单号
     */
    @JsonProperty("inner_trade_no")
    private String innerTradeNo;

    /**
     * [32]
     * 交易状态
     * TRADE_SUCCESS	交易成功，用户付款成功
     * TRADE_FINISHED	交易结束，付款金额已结算给商户
     * TRADE_CLOSED 	交易关闭，交易失败
     */
    @JsonProperty("trade_status")
    private KjtTradeState tradeStatus;

    /**
     * [15]
     * 交易金额，单位为：RMB 元。取值范围为[0.01，1000000000000.00)，精确到小数点后两位。
     */
    @JsonProperty("trade_amount")
    private String tradeAmount;

    /**
     * [14]
     * 交易修改时间，格式[yyyyMMddHHmmss] ,
     * 如2009年12月25日9点10分10秒表示为：20091225091010
     */
    @JsonProperty("gmt_create")
    private String gmtCreate;
    public static final DateTimeFormatter GMT_CREATE_FORMATTER = DateUtil.DATE_TIME_FORMATTER_NO_SEP;

    /**
     * [14]
     * 交易支付时间，格式同gmt_create
     * 只有支付过才非空
     */
    @JsonProperty("gmt_payment")
    private String gmtPayment;
    public static final DateTimeFormatter GMT_PAYMENT_FORMATTER = DateUtil.DATE_TIME_FORMATTER_NO_SEP;

    /**
     * [14]
     * 交易关闭时间，格式同gmt_create
     * 只有交易关闭订单才非空
     */
    @JsonProperty("gmt_close")
    private String gmtClose;
    public static final DateTimeFormatter GMT_CLOSE_FORMATTER = DateUtil.DATE_TIME_FORMATTER_NO_SEP;

    /**
     * [100]
     * 失败原因
     */
    private String failReason;

    /**
     * [16]
     * 失败编码
     */
    private String failCode;
}
